function buildModal( config )
{
	var modal = $('<div />').addClass('modal').attr('id', config.modalID);

	var mhead = $('<div />').addClass('modal-header').appendTo(modal);
	$('<span />').addClass('close').html('&times;').appendTo(mhead).click(function() { closeModal() });
	$('<h3 />').text(config.modalHeader).appendTo(mhead);

	var mbody = $('<div />').addClass('modal-body').appendTo(modal);
	$('<p />').text(config.modalBody).appendTo(mbody);

	var mfoot = $('<div />').addClass('modal-footer').appendTo(modal);
	$('<span />').addClass('btn primary go').attr('data-ajax', config.ajaxUrl).text(config.btnPrimaryText).appendTo(mfoot);
	$('<span />').addClass('btn cancel').text('Cancel').appendTo(mfoot).click(function() { closeModal() });

	$('<div />').addClass('modal-backdrop').appendTo('body');
	modal.appendTo('body');
}

function closeModal()
{
	$('.modal').remove();
	$('.modal-backdrop').remove();
}

$('.modal .btn.go').live('click', function() {
	var btn  = $(this);
	var btxt = btn.text();
	
	// prevent submitting again
	if (btn.hasClass('disabled')) return false;
	
	btn.addClass('disabled').html('Loading&hellip;');
	
	$.ajax({
		type		: 'post',
		url			: btn.attr('data-ajax'),
		dataType	: 'json',
		success		: function(data)
		{
			if (data.success == true)
			{
				setTimeout(function() { location.reload(true); }, 1500);
			}
		},
		error		: function(j, t, e)
		{
			$('<span />').addClass('pull-left').text(t + ': ' + e).appendTo($('.modal .modal-footer'));
		}
	});
});



(function ($) {
	
	$.modal = function (data) {
		
	}
	
	// methods
	
	$.extend($.modal, {
		
		init: function() {
		
		},
		
		close: function(options, callback) {
			
			// if (typeof callback === 'function') callback.call(this);
			
			/*$('.modal').fadeOut('fast', function() {
				$(this).remove();
				$('.modal-backdrop').fadeOut('fast', function() { $(this).remove(); })
			});*/
			$('.modal').remove();
			$('.modal-backdrop').remove();
		},
		
		disable: function() {
			$('.modal-footer .btn').addClass('disabled');
		},
		
		enable: function() {
			$('.modal-footer .btn').removeClass('disabled');
		}
		
	});
	
	$.fn.modal = function (settings) {
		
		var defaults = {
			modalID: null,
			modalHeader: 'Modal Header',
			modalBody: 'Lorem ipsum dolor sit amet?',
			btnPrimaryText: 'Submit',
			btnPrimaryClass: 'go',
			btnCancelText: 'Cancel',
			ajaxUrl: 'url',
		};
		
		var config = $.extend(defaults, settings);
		
		if (config.modalID === null)
		{
			alert('You forgot to add the Modal ID.');
			return;
		}
		
		var modal = $('<div />').addClass('modal').attr('id', config.modalID);
		
		var mhead = $('<div />').addClass('modal-header').appendTo(modal);
        $('<span />').addClass('close').html('&times;').click($.modal.close).appendTo(mhead);
        $('<h3 />').text(config.modalHeader).appendTo(mhead);
        
        var mbody = $('<div />').addClass('modal-body').appendTo(modal);
        $('<p />').text(config.modalBody).appendTo(mbody);
        
        var mfoot = $('<div />').addClass('modal-footer').appendTo(modal);
        $('<span />').addClass('btn primary delete ' + config.btnPrimaryClass).attr('data-ajax', ajaxUrl).text(config.btnPrimaryText).appendTo(mfoot);
        $('<span />').addClass('btn').text(config.btnCancelText).click($.modal.close).appendTo(mfoot);

		// $('<div />').addClass('modal-backdrop').hide().appendTo('body').fadeIn('fast', function(){
			// modal.hide().appendTo('body').fadeIn('fast');
		// });
		
		$('<div />').addClass('modal-backdrop').appendTo('body');
		modal.appendTo('body');
	}
	
	// private functions
	
	// function init()
	
})(jQuery);